package com.zhuiyun.project.api.system.businesDept.service;

import com.zhuiyun.project.api.system.businesDept.entity.SysDept;
import com.zhuiyun.project.api.system.menu.entity.TreeSelect;

import java.util.List;

/**
 * @ClassName SysBusinesDeptConteoller
 * @Description TODO 租户部门管理 服务层
 * @Author wx
 * @Date 2023/12/5 20:55
 **/
public interface SysBusinesDeptService {

    /**
     * @Author wx
     * @Description 获取租户部门列表
     * @Date 2023/12/6 8:51
     * @Return
     * @param dept
     */
    List<SysDept> selectDeptList(SysDept dept);

    /**
    * @Author wx
    * @Description 校验部门名称是否唯一
    * @Date 2023/12/6 9:53
    * @Return
    * @param dept
    */
    boolean checkDeptNameUnique(SysDept dept);

    /**
    * @Author wx
    * @Description 新增部门信息
    * @Date 2023/12/6 9:58
    * @Return
    * @param dept
    */
    int insertDept(SysDept dept);

    /**
    * @Author wx
    * @Description 效验部门是否有数据权限
    * @Date 2023/12/6 10:40
    * @Return
    * @param deptId
    */
    void checkDeptDataScope(Long deptId, String venueUniqueIdentifier);

    /**
    * @Author wx
    * @Description 根据部门id查询部门数据
    * @Date 2023/12/6 10:42
    * @Return
    * @param deptId
    */
    SysDept selectDeptById(Long deptId, String venueUniqueIdentifier);

    /**
    * @Author wx
    * @Description 根据id查询所有子部门
    * @Date 2023/12/6 11:41
    * @Return
    * @param deptId
    */
    int selectNormalChildrenDeptById(Long deptId, String venueUniqueIdentifier);

    /**
    * @Author wx
    * @Description 修改部门信息
    * @Date 2023/12/6 11:45
    * @Return
    * @param dept
    */
    int updateDept(SysDept dept);

    /**
    * @Author wx
    * @Description 是否存在部门子节点
    * @Date 2023/12/6 14:10
    * @Return
    * @param deptId
    */
    boolean hasChildByDeptId(Long deptId, String venueUniqueIdentifier);

    /**
    * @Author wx
    * @Description 查询部门是否存在用户
    * @Date 2023/12/6 14:16
    * @Return
    * @param deptId
    */
    boolean checkDeptExistUser(Long deptId, String venueUniqueIdentifier);

    /**
    * @Author wx
    * @Description 删除部门信息
    * @Date 2023/12/6 14:19
    * @Return
    * @param deptId
    */
    int deleteDeptById(Long deptId, String venueUniqueIdentifier);

    /**
     * @Author wx
     * @Description 查询部门下拉树结构
     * @Date 2023/12/7 14:41
     * @Return
     * @param venueUniqueIdentifier
     */
    List<TreeSelect> selectDeptTreeList(String venueUniqueIdentifier);
}
